package link_list

// https://leetcode.cn/problems/linked-list-cycle/ leetcode-141
func hasCycle(head *ListNode) bool {
	if head == nil {
		return false
	}
	fast := head.Next
	slow := head
	// 这里不需要判断slow是否为nil的原因是fast总会比slow更快一步访问到后续的节点，因此只需要判断fast以及fast的下一个是否为空即可
	for fast != nil && fast.Next != nil {
		if slow == fast {
			return true
		}

		slow = slow.Next
		fast = fast.Next.Next
	}

	return false
}
